home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / 051-060 / amok56 / m2maker / txt / project.mod < prev    next >
Text File  |  1993-11-04  |  6KB  |  183 lines

  1. (*---------------------------------------------------------------------------
  2.   :Program.    m2Maker
  3.   :Author.     Thomas Stolze
  4.   :Address.    Goslarsche Str. 32, 3000 Hannover 21, Germany
  5.   :Phone.      (0)511 / 75 10 77
  6.   :Version.    V2.0
  7.   :Date.       14-Nov-90
  8.   :Copyright.  Shareware
  9.   :Language.   Modula-2
  10.   :Translator. M2Amiga V3.32d
  11.   :Contents.   Programming Utility.
  12.   :Remark.     Supports the M2Amiga System (C) by A+L AG Switzerland
  13. ---------------------------------------------------------------------------*)
  14.  
  15. IMPLEMENTATION MODULE Project;
  16.  
  17. FROM Arts            IMPORT BreakPoint;
  18. FROM DosD            IMPORT FileLockPtr,FileInfoBlockPtr,FileInfoBlock,
  19.                             accessRead,Date;
  20. FROM DosL            IMPORT CreateDir,UnLock,Examine,Rename,ExNext,CurrentDir,
  21.                             Lock,DateStamp;
  22. FROM FileRequester   IMPORT Pattern;
  23. FROM Storage         IMPORT Available,ALLOCATE,DEALLOCATE;
  24. FROM InitIntuition   IMPORT prgPtr,PrintStatus;
  25. FROM IntuitionD      IMPORT GadgetFlags,GadgetFlagSet;
  26. FROM IntuitionL      IMPORT RefreshGList;
  27. FROM LSOptions       IMPORT SaveOptions;
  28. FROM RequesterWindow IMPORT DeleteProjectRequester,LoadProjectRequester,
  29.                             TouchRequester;
  30. FROM Routines        IMPORT ExecuteStr,FilterLastDir,GetDosErr,MakeExecuteStr,
  31.                             MakePath,TestForFile,TestForProject;
  32. FROM String          IMPORT Concat,Copy,FirstPos,Length;
  33. FROM SYSTEM          IMPORT ADR,CAST;
  34. FROM XCopy           IMPORT XCopy,XType,SetOneDate;
  35.  
  36. (*FROM InOut IMPORT WriteLn,WriteString;*)
  37.  
  38. PROCEDURE SaveProject(txtDir : BOOLEAN);
  39. VAR src,
  40.     dest,
  41.     test    : ARRAY [0..255] OF CHAR;
  42.     dir     : ARRAY [0.. 40] OF CHAR;
  43.     ok      : BOOLEAN;
  44. BEGIN
  45.   src:=("");
  46.   MakePath(prgPtr^.BufferString[3],"m2Maker.cfg",src); SaveOptions(src);
  47.   PrintStatus("Save Project !"); ok:=FALSE;
  48.  
  49.   src:=("");  MakePath(prgPtr^.BufferString[3],"",src);
  50.   dest:=(""); MakePath(prgPtr^.BufferString[2],"",dest);
  51.  
  52.   IF txtDir THEN ok:=XCopy(src,dest,txt) ELSE ok:=XCopy(src,dest,all) END;
  53.   IF NOT ok THEN GetDosErr; END;
  54.  
  55.   src:=(""); MakePath(prgPtr^.BufferString[3],"",src);
  56.   src[Length(src)-1]:=00C; Concat(src,".info");
  57.   FilterLastDir(prgPtr^.BufferString[3],dir);
  58.   MakePath(prgPtr^.BufferString[2],dir,test); test[Length(test)-1]:=00C;
  59.   Concat(test,".info");
  60.  
  61.   IF NOT TestForFile(ADR(test)) THEN
  62.      ok:= XCopy(src,dest,single);
  63.   END;
  64.  
  65. END SaveProject;
  66.  
  67. PROCEDURE LoadProject;
  68. VAR src   : ARRAY [0..255] OF CHAR;
  69.     str,
  70.     dir   : ARRAY [0.. 31] OF CHAR;
  71.     exit  : BOOLEAN;
  72. BEGIN
  73.   PrintStatus("Load Project !"); exit:=FALSE;
  74.   MakePath(prgPtr^.BufferString[3],"",str); str[Length(str)-1]:=00C;
  75.   REPEAT
  76.     IF LoadProjectRequester(str) THEN
  77.        IF FirstPos(str,0,":") # -1 THEN
  78.           exit:=TRUE; MakePath(str,"",str); str[Length(str)-1]:=00C;
  79.           FilterLastDir(str,dir);
  80.  
  81.           src:=(""); MakePath(prgPtr^.BufferString[2],dir,src);
  82.           MakePath(str,"",str); str[Length(str)-1]:=00C;
  83.             Copy(prgPtr^.BufferString[3],str);
  84.             RefreshGList(ADR(prgPtr^.GadgetArray[3]),prgPtr^.window,NIL,1);
  85.           str[Length(str)-Length(dir)+1]:=00C;
  86.  
  87.           IF NOT XCopy(src,str,all) THEN GetDosErr END;
  88.  
  89.           src[Length(src)-1]:=00C; Concat(src,".info");
  90.  
  91.           IF TestForFile(ADR(src)) THEN
  92.              IF NOT XCopy(src,str,single) THEN GetDosErr END;
  93.           END;
  94.        END;
  95.     ELSE
  96.        exit:=TRUE;
  97.     END;
  98.  UNTIL exit;
  99. END LoadProject;
  100.  
  101. PROCEDURE DeleteProject;
  102. VAR file,
  103.     dummy : ARRAY [0..255] OF CHAR;
  104. BEGIN
  105.   PrintStatus("Delete Project !");
  106.   IF DeleteProjectRequester(prgPtr^.BufferString[3]) THEN
  107.      file:=(""); MakePath(prgPtr^.BufferString[3],"",file);
  108.      dummy:=("C:Delete "); Concat(dummy,file);
  109.      dummy[Length(dummy)-1]:=00C; Concat(dummy," ALL QUIET");
  110.  
  111.      ExecuteStr(ADR(dummy));
  112.  
  113.      file:=(""); MakePath(prgPtr^.BufferString[3],"",file);
  114.      file[Length(file)-1]:=00C; Concat(file,".info");
  115.  
  116.      IF TestForFile(ADR(file)) THEN
  117.         dummy:=("C:Delete "); Concat(dummy,file); Concat(dummy," QUIET");
  118.         ExecuteStr(ADR(dummy));
  119.      END;
  120.   END;
  121. END DeleteProject;
  122.  
  123. PROCEDURE TouchProject;
  124. VAR fileInfoPtr : FileInfoBlockPtr;
  125.     oldLock,
  126.     lock        : FileLockPtr;
  127.     date        : Date;
  128.     file        : ARRAY [0..255] OF CHAR;
  129.     bool        : BOOLEAN;
  130.  
  131.   PROCEDURE CheckFile(): BOOLEAN;
  132.   VAR pat : ARRAY [0..10] OF CHAR;
  133.   BEGIN
  134.     pat := ("#?.mod");
  135.     IF Pattern(fileInfoPtr^.fileName,pat) THEN
  136.        RETURN TRUE;
  137.     ELSE
  138.        pat := ("#?.def");
  139.        IF Pattern(fileInfoPtr^.fileName,pat) THEN
  140.           RETURN TRUE;
  141.        END;
  142.     END;
  143.     RETURN FALSE;
  144.   END CheckFile;
  145.  
  146. BEGIN
  147.  IF TouchRequester() THEN
  148.   PrintStatus("Touch Project !!");
  149.   IF Available(SIZE(FileInfoBlock)) THEN
  150.      ALLOCATE(fileInfoPtr,SIZE(FileInfoBlock));
  151.      MakePath(prgPtr^.BufferString[3],"",file);
  152.      IF (selected IN prgPtr^.GadgetArray[16].flags) THEN
  153.          TestForProject(file,"txt/",file);
  154.      END;
  155.      file[Length(file)-1]:=00C;
  156.  
  157.      lock:=Lock(ADR(file),accessRead);
  158.      IF lock # NIL THEN
  159.         oldLock:=CurrentDir(lock);
  160.         IF Examine(lock,fileInfoPtr) THEN
  161.            REPEAT
  162.              IF (fileInfoPtr^.dirEntryType < 0) THEN
  163.                 IF CheckFile() THEN
  164.                    DateStamp(ADR(date));
  165.                    bool:=SetOneDate(fileInfoPtr^.fileName,date,LONGINT(lock));
  166.                 END;
  167.              END;
  168.            UNTIL (ExNext(lock,fileInfoPtr) = FALSE);
  169.         END;
  170.         lock:=CurrentDir(oldLock);
  171.         IF lock # NIL THEN UnLock(lock) END;
  172.         PrintStatus("Touched Project successfully !");
  173.      END;
  174.      DEALLOCATE(fileInfoPtr,SIZE(FileInfoBlock));
  175.   ELSE
  176.     PrintStatus("Could'nt finish Job!");
  177.   END;
  178.  END;
  179. END TouchProject;
  180.  
  181. BEGIN
  182. END Project.
  183.